package com.ruoyi.performance.mapper;

import com.ruoyi.performance.domain.PerfCheckresult;
import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 绩效打分Mapper接口
 * 
 * @author ygx
 * @date 2020-09-03
 */
@Mapper
public interface PerfCheckresultMapper 
{
    /**
     * 查询绩效打分
     * 
     * @param perfcheckresultId 绩效打分ID
     * @return 绩效打分
     */
    public PerfCheckresult selectPerfCheckresultById(Long perfcheckresultId);

    /**
     * 查询绩效打分列表
     * 
     * @param perfCheckresult 绩效打分
     * @return 绩效打分集合
     */
    public List<PerfCheckresult> selectPerfCheckresultList(PerfCheckresult perfCheckresult);
    
    /**
     * 绩效打分列表（新版srm，拼接查询）
     * 
     * @param perfCheckresult 绩效打分
     * @return 绩效打分集合
     */
    public List<PerfCheckresult> selectResultList(@Param("userId") Long userId,@Param("checkcode") String checkcode);
    
    /**
     * 查询绩效打分列表all（新版srm，拼接查询）
     * 
     * @param perfCheckresult 绩效打分
     * @return 绩效打分集合
     */
    public List<PerfCheckresult> selectResultListAll(@Param("userId") Long userId,@Param("checkcode") String checkcode);
    
    
    /**
     * 根据checkcode获取考核单、指标主项、细项相关数据
     * @param checkcode
     * @return
     */
    public List<PerfCheckresult> selectDataFromCheck(String checkcode);
    
    /**
     * 根据checkcode获取考核单、指标主项、细项相关数据并写入打分表
     * @param checkcode
     * @return
     */
    public int insertreSultFromCheck(PerfCheckresult perfCheckresult);
    
    /**
     * 根据考核单查询该考核单打分细项状态，new为未打分，public为已提交打分，所有打分都提交后 count = 0（返回flase），生成考核单
     * @param checkcode
     * @return 是否存在状态为new的打分结果，存在则为true，不存在为flase
     */
    public boolean selectResultStatus(@Param("checkcode") String checkcode);
    
    /**
     * 新增绩效打分
     * 
     * @param perfCheckresult 绩效打分
     * @return 结果
     */
    public int insertPerfCheckresult(PerfCheckresult perfCheckresult);

    /**
     * 修改绩效打分
     * 
     * @param perfCheckresult 绩效打分
     * @return 结果
     */
    public int updatePerfCheckresult(PerfCheckresult perfCheckresult);

    /**
     * 删除绩效打分
     * 
     * @param perfcheckresultId 绩效打分ID
     * @return 结果
     */
    public int deletePerfCheckresultById(Long perfcheckresultId);

    /**
     * 批量删除绩效打分
     * 
     * @param perfcheckresultIds 需要删除的数据ID
     * @return 结果
     */
    public int deletePerfCheckresultByIds(String[] perfcheckresultIds);
    
    
    /**
     * 根据考核单号获取考核单总分数
     * @param checkcode
     * @return
     */
    public Long getSumScore(String checkcode);
    
    /**
     * 根据考核单号获取绩效等级模板
     * @param checkcode
     * @return
     */
    public List<PerfCheckresult> getLevel(String checkcode);
}
